fn chk_match_fn(inval : i32) -> String {
    match inval {
        1 | 2 => {
            println!("[{},{}]input:{}", file!(), line!(), inval);
            "str1".to_string()
        }
        3 | 4 => {
            "str2".to_string()
        }
        _ => {
            "str3".to_string()
        }
    }
}

// format!("{:x}", num)	255 → "ff"	小写十六进制
// format!("{:X}", num)	255 → "FF"	大写十六进制
// format!("0x{:X}", num)	42 → "0x2A"	带 0x 前缀
// format!("{:08X}", num)	10 → "0000000A"	8位补零大写
// num.to_string_radix(16)	255 → "ff"	小写十六进制
// write!(&mut buf, "{:X}", num)	255 → "FF"	写入字符串

fn chk_match_option(inval : Option<i32>) -> String {
    match inval {
        None => "none string".to_string(),
        Some(tmpv) => tmpv.to_string(),
    }
}

fn chk_if_option(inval : Option<i32>) -> String {
    if let Some(tmpv) = inval {
        tmpv.to_string()
    }
    else {
        "none string".to_string()
    }
}

fn main() {
    {
        println!("[{},{}]out:{}", file!(), line!(), chk_match_fn(1));
        println!("[{},{}]out:{}", file!(), line!(), chk_match_fn(2));
        println!("[{},{}]out:{}", file!(), line!(), chk_match_fn(3));
        println!("[{},{}]out:{}", file!(), line!(), chk_match_fn(5));
    }
    {
        println!("[{},{}]out:{}", file!(), line!(), chk_match_option(None));
        println!("[{},{}]out:{}", file!(), line!(), chk_match_option(Some(7)));
    }
    {
        println!("[{},{}]out:{}", file!(), line!(), chk_if_option(None));
        println!("[{},{}]out:{}", file!(), line!(), chk_if_option(Some(8)));
    }
}
